package HomeWork;

import java.io.File;
import java.io.FileWriter;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
    public static void main(String[] args) throws Exception{
        int port = 8002;
        // 创建服务器对象
        ServerSocket server = new ServerSocket(port);
        // 等待客户端连接
        Socket client = server.accept();//server.accept()具有堵塞功能，只有成功连接才会继续执行
        // 输出连接情况
        System.out.println("链接成功");
        // 创建io流对象
        // 因为传输的是类对象，所以用ObjectInputStream和ObjectOutputStream
        ObjectInputStream is = new ObjectInputStream(client.getInputStream());// 输入流
        ObjectOutputStream os = new ObjectOutputStream(client.getOutputStream());// 输出流
        // 文件名
        String filePath = "HomeWork/t.txt";
        File fileName = new File(filePath);
        while (true) {
            // 接受从客户端发送过来的Teacher对象
            Teacher teacher = (Teacher)is.readObject();
            // 当结束是，客户端会发送一个空的Teacher对象
            if(teacher.isNull()){break;}
            // 使用FileWriter 类的 write 方法时，如果文件不存在会自动创建
            try (FileWriter fileWriter = new FileWriter(fileName,true)) {
            // 将数据写入文件
            fileWriter.write(teacher.toString());
            } catch (Exception e) {
                // 打印错误信息
                e.printStackTrace();
            }
        }
        //写入完成后，返回给客户端一个信息: "ok
        String text = "ok";
        // 发送ok
        os.writeObject(text);
        // 关闭资源 处理异常 注意判空
        // 后使用的先关闭
        if(os != null){os.close();}
        if(is != null){is.close();}
        if(client != null){client.close();}
        if(server != null){server.close();}

    }
}
